package simulador;

import org.javahispano.javacup.model.Tactic;
import org.javahispano.javacup.model.engine.Partido;
import org.javahispano.javacup.model.util.Constants;

import com.blame.javacup.hortalezablamers.HortalezaBlamers;

/**
 * @author Roland Cruz bas ado en la idea original de sac astel (salim castellanos, salimsalim4< span class="java_javadoc_tag">@gmail.com)
 */
public class SimuladorPartidos {

    public static void main(String args[]) throws Exception {
         int iter = 100;
         simular(new HortalezaBlamers(), new HortalezaBlamers(), iter);
    }

	public static void simular(Tactic a, Tactic b, int iter) throws Exception {
		Partido p = null;
		int gl = 0, gv = 0, pg = 0, pp = 0, pe = 0, gtl = 0, gtv = 0, mgl = 0, mgv = 0, mingl = 100;
		int pgp = 0, ppp = 0;
		double posesion = 0;

		for (int i = 0; i < iter; i++) {
			System.out.println("Simulando partido " + (i + 1) + " de " + iter);
			gl = 0;
			gv = 0;
			p = new Partido(a, b, false);

			p.inicioRapido();
			while (p.getIteracion() < Constants.ITERACIONES) {
				p.iterar();
			}
			gl = gl + p.getGolesLocal();
			gv = gv + p.getGolesVisita();
			posesion += p.getPosecionBalonLocal();
			if (gl > mgl) {
				mgl= gl;
			}
			if (gv > mgv) {
				mgv= gv;
			}
			if (gl < mingl) {
				mingl  = gl;
			}
			if (p.getGolesLocal() == p.getGolesVisita()) {
				if(p.getPosecionBalonLocal() > 0.5)
					pgp++;
				else if(p.getPosecionBalonLocal() < 0.5)
					ppp++;
				else
					pe++;
			}
			if (p.getGolesLocal() > p.getGolesVisita()) {
				pg++;
			}
			if (p.getGolesLocal() < p.getGolesVisita()) {
				pp++;
			}
			gtl += gl;
			gtv += gv;
		}
//		String visita = format(String.format("                      %s", p.getDetalleVisita().getNombre()), 22);
//		String ppg = format(String.format("    %.1f", pg * 100f / iter), 5);
//		String ppp = format(String.format("    %.1f", pp * 100f / iter), 5);
//		String ppe = format(String.format("    %.1f", pe * 100f / iter), 5);
//		String sgl = format(String.format("     %d", gtl), 7);
//		String sgv = format(String.format("     %d", gtv), 7);
//		String smgl = format(String.format(" %d", mgl), 2);
//		String smgv = format(String.format(" %d", mgv), 2);
//		String smingl = format(String.format(" %d", mingl), 2);
//		String pos = format(String.format("  %d", Math.round((posesion * 100 / iter))), 3);

		System.out.println("-----------------------------------------");
		System.out.println(p.getDetalleLocal().getTacticName() + ":");
		System.out.println("Partidos ganados:        " + pg);
		System.out.println("Partidos ganados (pos):  " + pgp);
		System.out.println("Partidos perdidos:       " + pp);
		System.out.println("Partidos perdidos (pos): " + ppp);
		System.out.println("Partidos empatados:      " + pe);
		System.out.println("Goles a favor:   " + gtl);
		System.out.println("Goles en contra: " + gtv);
		System.out.println("Maximo goles a favor: " + mgl);
		System.out.println("Maximo goles en contra: " + mgv);
		System.out.println("Minimo goles a favor: " + mingl);
		System.out.println("Posesion: " + Math.round((posesion * 100) / iter));
	}

//	private static String format(String string, int largo) {
//		return string.substring(string.length() - largo, string.length());
//	}
}